package com.itsense.stock.mapper;

import com.itsense.stock.pojo.domain.*;
import com.itsense.stock.pojo.entity.StockRtInfo;
import org.apache.ibatis.annotations.Param;
import org.joda.time.DateTime;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
* @author sense
* @description 针对表【stock_rt_info(个股详情信息表)】的数据库操作Mapper
* @createDate 2024-12-30 20:59:30
* @Entity com.itsense.stock.pojo.entity.StockRtInfo
*/
public interface StockRtInfoMapper {


    int deleteByPrimaryKey(Long id);

    int insert(StockRtInfo record);

    int insertSelective(StockRtInfo record);

    StockRtInfo selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(StockRtInfo record);

    int updateByPrimaryKey(StockRtInfo record);

    /**
     * 指定时间点下的股票数据
     * @param curDate
     * @return
     */
    List<StockUpDownDomain> getStockInfoByTime(@Param("curDate") Date curDate);

    /**
     * 按时间返回时间点下股票的前四项
     * @param curDate
     * @return
     */
    List<StockUpDownDomain> getStockInfoByTimeLimit(@Param("curDate") Date curDate);

    /**
     * 统计指定时间内股票涨跌停的数据
     * @param startDate 开始时间
     * @param endDate 截至时间
     * @param flag 1:涨停 0:跌停
     * @return
     */
    List<Map> getStockUpDownCount(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("flag") int flag);

    /**
     * 根据当前时间返回股票涨幅区间的数量
     * @param curDateTime
     * @return
     */
    List<Map> getIncreaseRangeInfoByDate(@Param("dateTime") Date curDateTime);

    /**
     * 根据股票编码查指定时间的分时数据
     * @param openDate 开盘时间
     * @param endDate 当前时间(截止时间)
     * @param stockCode 股票编码
     * @return
     */
    List<Stock4MinuteDomain> getStock4MinuteInfo(@Param("openDate") Date openDate, @Param("endDate") Date endDate, @Param("stockCode") String stockCode);

    /**
     * 根据股票编码查询对应的日K线数据
     * @param startDate
     * @param endDate
     * @param stockCode
     * @return
     */
    List<Stock4EvrDayDomain> getStockDKLine(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("stockCode") String stockCode);

    /**
     * 分批插入个股的数据
     * @param list
     * @return
     */
    int insertBatch(@Param("list") List<StockRtInfo> list);

    /**
     * 通过股票编码返回对应的周K线
     * @param code
     * @param startDate
     * @param endDate
     * @return
     */
    List<Stock4EvrWeekDomain> getStockWKLine(@Param("code") String code,@Param("startDate") Date startDate,@Param("curDate") Date curDate);

    /**
     * 通过股票编码返回对应的股票实时信息
     * @param code
     * @param startDate
     * @param endDate
     * @return
     */
    StockRt getStockRt(@Param("code") String code,@Param("startDate") Date startDate,@Param("endDate") Date endDate);

    /**
     * 通过股票编码返回对应的股票实时数据信息
     * @param code
     * @return
     */
    List<Map<String, Object>> getStockTradeInStatement(@Param("code") String code);
}
